﻿using System;

namespace SS.Ynote.Classic.AutoCompletion
{
    public class VB : IAutoCompleteMenu
    {
        public string Name
        {
            get { return "VB"; }
        }

        public string[] Keywords
        {
            get
            {
                return new string[] { "AddHandler",
"AddressOf",
"Alias",
"And",
"AndAlso",
"As",
"Boolean",
"ByRef",
"Byte",
"ByVal",
"Call",
"Case",
"Catch",
"CBool",
"CByte",
"CChar",
"CDate",
"CDbl",
"CDec",
"Char",
"CInt",
"Class",
"CLng",
"CObj",
"Const",
"Continue",
"CSByte",
"CShort",
"CSng",
"CStr",
"CType",
"CUInt",
"CULng",
"CUShort",
"Date",
"Decimal",
"Declare",
"Default",
"Delegate",
"Dim",
"DirectCast",
"Do",
"Double",
"Each",
"Else",
"ElseIf",
"End",
"EndIf",
"Enum",
"Erase",
"Error",
"Event",
"Exit",
"False",
"Finally",
"For",
"Friend",
"Function",
"Get",
"GetType",
"GetXMLNamespace",
"Global",
"GoSub",
"GoTo",
"Handles",
"If",
"Implements",
"Imports",
"In",
"Inherits",
"Integer",
"Interface",
"Is",
"IsNot",
"Let",
"Lib",
"Like",
"Long",
"Loop",
"Me",
"Mod",
"Module",
"MustInherit",
"MustOverride",
"MyBase",
"MyClass",
"Namespace",
"Narrowing",
"New",
"Next",
"Not",
"Nothing",
"NotInheritable",
"NotOverridable",
"Object",
"Of",
"On",
"Operator",
"Option",
"Optional",
"Or",
"OrElse",
"Overloads",
"Overridable",
"Overrides",
"ParamArray",
"Partial",
"Private",
"Property",
"Protected",
"Public",
"RaiseEvent",
"ReadOnly",
"ReDim",
"REM",
"RemoveHandler",
"Resume",
"Return",
"SByte",
"Select",
"Set",
"Shadows",
"Shared",
"Short",
"Single",
"Static",
"Step",
"Stop",
"String",
"Structure",
"Sub",
"SyncLock",
"Then",
"Throw",
"To",
"True",
"Try",
"TryCast",
"TypeOf",
"UInteger",
"ULong",
"UShort",
"Using",
"Variant",
"Wend",
"When",
"While",
"Widening",
"With",
"WithEvents",
"WriteOnly",
"Xor",
"Region",
"#Const",
"#Else",
"#ElseIf",
"#End",
"#If",
"#Region",};
            }
        }


        string[] snippets = { "If(^)\n\n\nEnd If", "If(^)Then\n\n\n\nElse\n\n\nEnd If", "For(^)\n\n\nEnd For",  "Select Case(^)\n\nEnd Select" };
        string[] declarationSnippets = { 
               "Public Class ^\n\nEnd Class", "Private Class ^\n\nEnd Class", "Friend Class ^\n\nEnd Class",
               "Public Structure ^\n\n;\nEnd Structure", "Private Structure ^\n\n;\nEnd Structure",
               "Public Sub ^()\n\n;\nEnd Sub", "Private Sub ^()\n\n;\nEnd Sub", "Shared Sub ^()\n\n;\nEnd Sub", "Sub ^()\n{\n;\n}",
               };
        public string[] Snippets
        {
            get { return snippets; }
        }

        public string[] DeclarationSnippets
        {
            get { return declarationSnippets; }
        }

        public string[] Namespaces
        {
            get { return NetNamespaces.GetNamespaces(); }
        }
    }
}
